10. 정규화(Normalization)1 - 함수적 종속성 :: DB에 대한 글들을 모았습니다.[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

DB에 대한 글들을 모았습니다.
[1]
등록일:2009-04-18 22:40:26 (0%)
작성자:
제목:10. 정규화(Normalization)1 - 함수적 종속성
 

정규화(Normalization)

 

1. 정규화란 무엇인가

 

관계 Schema의 데이터구조를 수학적 이론을 적용, 분석하여 보다 나은 데이터구조로 재구축하는 관계 Schema 설계방법론

 

 

2. 정규화는 왜 하는가


 

* 잘못된 데이터베이스 설계 -> 데이터 중복 발생 -> 갱신이상 유발 -> 데이터 무결성 확보

   불가능

* 중복데이터의 저장 최소화

* 데이터를 다루는 간단한 논리를 지원해 주기 위하여

 

 

3. 갱신이상(update anomaly)

 

<열심히>학원관리 테이블

반이름

과목명

강사명

학생번호

학생명

학생연락처

학생주소

장미

영어

아무개

2134

소문난

111-1111

서울시

장미

영어

아무개

4352

영리한

222-2222

부산시

장미

영어

아무개

2435

재빠른

333-3333

대구시

진달래

수학

홍길동

1345

성실한

444-4444

인천시

코스모스

국어

박문수

7632

게으른

555-5555

순천시

 

 

* 삭제이상(deletion anomaly)

: 어떤 정보를 삭제할 때, 삭제되지 않아야 할 정보까지 같이 삭제되는 현상

- <열심히>학원테이블에서 소문난학생이 학원을 그만 두어서 소문난학생의 정보를 삭제

  하는 경우, 만약 장미반의 학생이 유일하게 소문난학생 한 명이었다면 반이름, 과목명,

  강사명 등 삭제되지 않아야 할 정보가 같이 삭제된다.

 

 

* 삽입이상(insertion anomaly)

: 어떤 정보를 입력할 때, 입력이 불가능하거나 불필요한 정보까지 입력해야 하는 현상

-  위 테이블에서 과학반을 신설하는 경우, 아직 등록학생이 하나도 없는 경우이므로 과학반

   을 신설할 수가 없다(<-학생번호가 Primary Key여서 Null값을 가질 수 없기 때문).

 

 

* 수정이상(modification anomaly)

: 반복된 데이터 중 일부만 수정하여 데이터 불일치가 발생하는 현상

- 위 테이블에서 장미반의 담당강사가 아무개에서 갑을병으로 바뀌는 경우, 장미반에 해

  당하는 모든 tuple을 다 수정해야 한다.

 

 

4. 함수적 종속성(Functional Dependency)

 

4-1. 결정자(Determinant)와 종속자(Dependent)

 

- 결정자는 주어진 릴레이션에서 다른 애트리뷰트(또는 애트리뷰트들의 집합) 고유하게

결정하는 하나 또는 하나 이상의 애트리뷰트를 의미

- 결정자를 아래와 같이 표기하고, 이를 A B 결정한다(또는 B A 의해 결정된다,

  또는 A B 결정자이다)라고 말한다.

                     A B  (A : Determinant, B : Dependent)

 

 

4-2. 함수적 종속성

 

- 데이터들이 어떤 기준값에 의해 종속되는 현상, , 기준값을 결정자(Determinant)

라 하고 종속되는 값을 종속자(Dependent)라고 한다. 예를 들어, 사람이라는 엔터티타입

주민등록번호, 이름, 출생지, 호주라는 속성이 존재한다고 , 여기에서 이름, 출생

, 호주라는 속성은 주민등록번호 속성에 종속된다고 있다.

 

★ 함수적 종속성(Functional Dependency : FD) ★

 

 

 

 t1.X = t2.X 이면 t1.Y = t2.Y이다

 

 

    여기서 잠시 고등학교 시절에 배운 함수의 정의를 다시 한번 생각

    해 보자. X에서 Y로의 사상 f 는 함수이다. X의 값이 Y의 값 하나와

    반드시 대응하고 있기 때문이다. 곧, 하나의 X는 하나의 Y와 반드

    시 대응한다는 것이다. b와 d가 3에 같이 대응하고 있지만 이것은

    함수의 성립조건과는 아무런 관계가 없다. Y의 값의 중복과 관계없

    이 함수의 조건은 X에 관한 조건으로서 반드시, 하나만 대응하면 

    된다는 것이다.(X : 독립변수, Y : 종속변수)

 

 

 

 

 

다음과 같은 <사람>관계스키마와 그에 대한 테이블이 있다고 하자.

 

R : 사람(주민등록번호, 이름, 출생지, 연락처)

 

<사람> 테이블 : R의 인스턴스 r

주민등록번호

 

출 생 지

연 락 처

 

111-1111

아 무 개

 

123-1234

 

222-2222

홍 길 동

 

234-1234

 

333-3333

아 무 개

 

345-1234

 

444-4444

갑 을 병

 

456-1234

 

 

 

이 테이블의 대응관계를 위의 함수처럼 표시하면 다음과 같다.

 

 

 

 

(주민등록번호 -> 이름) 의 대응관계는 함수이다. 그러나 그 역은 함수가 아니다. 아무개가 반드시 하나의 대응관계가 아니라 111-1111, 222-2222 의 두 개의 주민등록번호와 대응하고 있기 때문이다. 여기서 주민등록번호는 이름을 함수적으로 결정한다. 그러나 이름은 주민등록번호를 함수적으로 결정하지 못한다. 곧, 주민등록번호는 이름의 결정자(Determinant)이고 이름은 주민등록번호의 종속자(Dependent)이며, 따라서 이름은 주민등록번호에 함수적 종속관계를 가진다.

 

“t1.X = t2.X 이면 t1.Y = t2.Y이다” 라는 문장은 X의 하나의 애트리뷰트값(t1.X = t2.X)Y의 하나의 애트리뷰트값(t1.Y = t2.Y)에 대응한다는 뜻이다. 즉, 각 X값에 대해 반드시 한 개의 Y값이 대응된다는 것이며, 이를 정리하면,

 

주어진 릴레이션 R에서 애트리뷰트 Y가 애트리뷰트 X에 함수적으로 종속하는 필요 충분 조건은 "각 X 값에 대해 반드시 한 개의 Y 값이 대응"된다는 것이다.

 

“t1.X = t2.X 이면 t1.Y = t2.Y이다”에 대한 보충설명

 

    "if t1.X = t2.X, then t1.Y = t2.Y"는 좀더 줄이면 "if x1 = x2, then y1 = y2"이죠.

     우리말로 "x1 =  x2이면 y1 = y2이다"인데, 좀 다른 말로 표현하면,

      x1과  x2가 같은 경우에  y1 과  y2가 같지 않은 경우는 없다,

      x1과  x2가 같은데도  y1과  y2가 같지 않은 경우는 없다, 라는 것이죠.

     

      "x1과 x2가 같다(x1=x2)"는 무슨 말입니까.

       x1과 x2가 같으니 동일한 x값이라는 소리죠? 즉, 같은 하나의 x값이라는 소리죠.

       마찬가지로, "y1 과  y2가 같다(y1 = y2)"라는 뜻은 같은 하나의 y값이 되구요.

       이것은, 하나의 x값에 대하여 y값이 달라지는 경우는 없다는 것이죠.

       하나의 x값에 대하여 y값이 달라지는 경우는 어떤 경우입니까.

       하나의 x값에 대하여 하나가 아닌 여러 개의 y값이 대응하여 어떤 값이 x값과 대응하고

       있는 지 판단하기가 힘들어진 경우겠죠.

      

       따라서 정리하면,

 

           "if t1.X = t2.X, then t1.Y = t2.Y"

     

       라는 뜻은,

 

           "각 X 값에 대해 반드시 한 개의 Y 값이 대응"

 

       이라고 되는 것입니다.

 

          "비가 오면 우산을 쓴다"

    

     라는 말은 부정하면 어떤 말이 되나요.

     중, 고 시절 명제를 배우는 수학시간에 한번은 나왔을 듯한 질문인데요.

     이 명제의 부정을 말하라면 대부분,

         

          "비가 안오면 우산을 안쓴다"

  

     라고 대답을 합니다.

     대부분이 대답한다고 항상 모범답안은 아니지요.

     명제의 부정이라 너무 수학적으로 생각하고 고민하여서 대답이 오히려 어렵게 되는데,

     이 명제의 올바른 부정은,

 

          "비가 오는데도 우산을 쓰지 않는다"

 

     라는 것입니다. 수학의 문제가 아니라 순전히 일상적인 국어의 문제죠.

     "그녀를 보면 기분이 좋다"의 부정은 "그녀를 봤는데도 기분이 좋지 않다"

     따라서, "비가 오면 우산을 쓴다"라는 문장을 달리 표현하면,

 

          "비가 오는데도 우산을 쓰지 않는 경우는 없다"

 

     가 되는 것이지요.

    

     ㅎㅎㅎ... 알쏭달쏭 하나요.

     잠시 수학이라는 부담을 잊어버리시고 그냥 국어적 문장으로만 생각하시길...

 

 

4-3. 완전 함수적 종속성(Full Functional Dependency) &

       부분 함수적 종속성(Partial Functional Dependency)

 

임의의 릴레이션 R에서 속성 또는 속성들의 집합 X에 대해 Y가 함수적으로 종속되면서, X의 부분 집합에 대하여서는 함수적으로 종속하지 않은 경우, Y는 X에 대하여 완전 함수적 종속성을 갖는다고 한다.

 

<학생>테이블

 

학 과 명

학과전화번호

과 목 번 호

 

11002

컴퓨터과학

112-1122

CS312

A0

11002

컴퓨터과학

112-1122

CS315

B0

24036

정보통신

234-4321

IC220

C0

 

 

(학번, 과목번호) -> 학과명, (학번, 과목번호) -> 학과전화번호

(학번) -> 학과명, (학번) -> 학과전화번호

학과명과 학과전화번호는 (학번, 과목번호)에 함수적 종속이면서 완전 함수적 종속은 아니다. (학번, 과목번호)의 부분집합인 (학번)에 함수적으로 종속되고 있기 때문이다.

 

 

4-4. 이행적 함수적 종속성(Transitive Functional Dependency)

 

한 릴레이션의 속성 X, Y, Z가 주어졌을 때 함수적 종속성 X Y와 Y Z가 성립되면 논리적 결과로 X Z가 성립한다. 이 때 속성 Z는 X에 이행적 함수적 종속성이라고 한다.

 

위의 <학생>테이블에서

               학번 -> 학과명, 학과명 -> 학과전화번호

이므로

               학번 -> 학과전화번호

의 이행적 함수적 종속성관계가 성립한다. 여기서 (학과전화번호) -> (학번) 의 관계는 성립하지 않고 있다.

[본문링크] 10. 정규화(Normalization)1 - 함수적 종속성
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=31470
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.